﻿Public Class xtf_ABMtelepeajepedido

    Dim ulg_row As DataRow
    Dim obj_telepeajepedido As cls_telepeajepedido_ = Nothing

    Public Sub New()
        InitializeComponent()
        Cargarproveedor_()
        Cargarpersonal_()
        cargarCombo(cbo_estado, GetType(cls_telepeajepedido_.enu_estado))
        AgregarValidaciones()
    End Sub

    Public Overrides Sub CargarObjetos()
        Cargarproveedor_()
        Cargarpersonal_()
    End Sub

    Private Sub Cargarproveedor_()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_proveedor.EditValue

        Dim proveedor_ As New cls_proveedor_
        proveedor_.CargarTodos(True)
        cargarCombo(cbo_proveedor, proveedor_.Items)
        cbo_proveedor.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_proveedor.EditValue)

    End Sub
    Private Sub Cargarpersonal_()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_personal.EditValue

        Dim personal_ As New cls_personal_
        personal_.CargarTodos()
        cargarCombo(cbo_personal, personal_.Items)
        cbo_personal.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_personal.EditValue)

    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado
            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"
            obj_telepeajepedido = New cls_telepeajepedido_
            btn_Registro.Enabled = False
            dtp_fechapedido.DateTime = Now.Date
            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef telepeajepedido As cls_telepeajepedido_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_telepeajepedido) Then
            obj_telepeajepedido = New cls_telepeajepedido_
        End If
        obj_telepeajepedido = telepeajepedido
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_telepeajepedido.ToString
        txt_ID.Text = obj_telepeajepedido.idtelepeajepedido
        dtp_fechapedido.DateTime = obj_telepeajepedido.fechapedido
        cbo_proveedor.EditValue = obj_telepeajepedido.idproveedor
        txt_contacto.Text = obj_telepeajepedido.contacto
        cbo_estado.EditValue = obj_telepeajepedido.estado
        txt_observaciones.Text = obj_telepeajepedido.observaciones
        cbo_personal.EditValue = obj_telepeajepedido.idpersonal
        txt_formulario.Text = obj_telepeajepedido.formulario
        txt_adjuntar.Tag = obj_telepeajepedido.adjunto
        txt_adjuntar.Text = obj_telepeajepedido.adjuntonombre

        btn_Registro.Enabled = True

        Me.Show()

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean

        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then
            obj_telepeajepedido.fechapedido = dtp_fechapedido.DateTime
            obj_telepeajepedido.idproveedor = cbo_proveedor.EditValue
            obj_telepeajepedido.contacto = txt_contacto.Text
            obj_telepeajepedido.estado = cbo_estado.EditValue
            obj_telepeajepedido.observaciones = txt_observaciones.Text
            obj_telepeajepedido.adjunto = txt_adjuntar.Tag
            obj_telepeajepedido.adjuntonombre = txt_adjuntar.Text
            obj_telepeajepedido.formulario = txt_formulario.Text
            obj_telepeajepedido.idpersonal = cbo_personal.EditValue

            If txt_ID.Text = "" Then
                obj_telepeajepedido.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADOtelepeajepedido_).AgregarItem(obj_telepeajepedido)
                End If
                Modificar(obj_telepeajepedido, frm_listado, ulg_row)
            Else
                obj_telepeajepedido.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_LISTADOtelepeajepedido_).ModificarItem(obj_telepeajepedido, ulg_row)
                End If
                Modificar(obj_telepeajepedido, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_telepeajepedido.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_telepeajepedido.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub


    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

    Private Sub txt_adjuntar_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_adjuntar.ButtonClick
        Select Case e.Button.ToolTip
            Case "Guardar como..."
                If Not IsNothing(txt_adjuntar.Tag) Then
                    Dim SFD As New SaveFileDialog
                    SFD.Filter = "Todos los archivos (*.*)|*.*"
                    SFD.FileName = txt_adjuntar.Text
                    If SFD.ShowDialog = Windows.Forms.DialogResult.OK Then
                        byteArrayTofile(txt_adjuntar.Tag, SFD.FileName)
                    End If
                End If
            Case "Adjuntar archivo..."
                Dim OFD As New OpenFileDialog
                OFD.Filter = "Todos los archivos (*.*)|*.*"
                If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
                    txt_adjuntar.Text = OFD.SafeFileName
                    txt_adjuntar.Tag = fileToByteArray(OFD.FileName)
                End If
            Case "Eliminar adjunto..."
                txt_adjuntar.Text = ""
                txt_adjuntar.Tag = Nothing
        End Select
    End Sub

    Public Function fileToByteArray(ByVal filepath As String) As Byte()
        ' Open a file that is to be loaded into a byte array
        Dim oFile As System.IO.FileInfo
        oFile = New System.IO.FileInfo(filepath)

        Dim oFileStream As System.IO.FileStream = oFile.OpenRead()
        Dim lBytes As Long = oFileStream.Length

        Dim fileData(lBytes - 1) As Byte
        If (lBytes > 0) Then
            ' Read the file into a byte array
            oFileStream.Read(fileData, 0, lBytes)
            oFileStream.Close()
        End If
        Return fileData
    End Function

    Public Function byteArrayTofile(ByVal byteArrayIn As Byte(), ByVal file As String) As Boolean
        Try
            Dim byteData() As Byte = byteArrayIn
            ' Create a file and write the byte data to a file.
            Dim oFileStream As System.IO.FileStream
            oFileStream = New System.IO.FileStream(file, System.IO.FileMode.Create)
            oFileStream.Write(byteData, 0, byteData.Length)
            oFileStream.Close()
        Catch ex As Exception
            Return False
        End Try
        Return True
    End Function
End Class